package com.csun.cmny.provider.service;

import com.csun.cmny.base.dto.LoginAuthDto;
import com.csun.cmny.core.support.IService;
import com.csun.cmny.provider.model.domain.OmcOldOut;
import com.csun.cmny.provider.model.dto.old_out.*;
import com.csun.cmny.provider.model.vo.old_out.OldOutOldmanVo;
import com.csun.cmny.provider.model.vo.old_out.OldOutVo;
import com.csun.cmny.provider.vo.MyCommentVo;

import java.util.List;

/**
 * @author chenzheng
 * @description:出院流程服务层
 * @date 2019/9/11 17:51
 */
public interface OmcOldOutService extends IService<OmcOldOut> {

    /**
     * apply omc old out
     *
     * @param oldOutDto     the old out dto
     * @param loginAuthDto  the login auth dto
     *
     * @return  the int.
     */
    Integer apply(OldOutDto oldOutDto, LoginAuthDto loginAuthDto);

    /**
     * service confirm omc old out
     *
     * @param oldOutConfirmDto  the old out confirm dto
     * @param loginAuthDto      the login auth dto
     *
     * @return  the int.
     */
    Integer serviceConfirm(OldOutConfirmDto oldOutConfirmDto, LoginAuthDto loginAuthDto);

    /**
     * medical approval omc old out
     *
     * @param oldOutApprovalDto the old out approval dto
     * @param loginAuthDto      the login auth dto
     *
     * @return  the int.
     */
    Integer medicalApproval(OldOutApprovalDto oldOutApprovalDto, LoginAuthDto loginAuthDto);

    /**
     * admit Approval omc old out
     *
     * @param oldOutApprovalDto the old out approval dto
     * @param loginAuthDto      the login auth dto
     *
     * @return the int.
     */
    Integer admitApproval(OldOutApprovalDto oldOutApprovalDto, LoginAuthDto loginAuthDto);

    /**
     * query omc old out vo list with page
     *
     * @param oldOutQueryDto    the old out query dto
     *
     * @return  the old out vo list
     */
    List<OldOutVo> queryListWithPage(OldOutQueryDto oldOutQueryDto);

    /**
     * query oldOut comment by oldOut id
     *
     * @param id    the revise id
     *
     * @return  the revise comment list
     */
    List<MyCommentVo> queryCommentById(Long id);

    /**
     * query old out vo by old out id
     *
     * @param id    the old out id
     *
     * @return  the old out vo
     */
    OldOutVo queryById(Long id);


    /**
     * charge confirm omc old out
     *
     * @param oldOutConfirmDto  the old out confirm dto
     * @param loginAuthDto      the login auth dto
     *
     * @return  the int.
     */
    Integer chargeConfirm(OldOutConfirmDto oldOutConfirmDto, LoginAuthDto loginAuthDto);

    /**
     * 查询可出院的老人列表
     *
     * @param oldOutOldmanQueryDto  the old out oldman query dto
     *
     * @return  the old out oldman man list
     */
    List<OldOutOldmanVo> queryOldmanList(OldOutOldmanQueryDto oldOutOldmanQueryDto);

    /**
     * 根据账单Id查询老人出院账单
     *
     * @param billId    账单Id
     *
     * @return  the old out vo
     */
    OldOutVo queryByBillId(Long billId);

    /**
     * query cur task states
     *
     * @param loginAuthDto
     *
     * @return
     */
    List<Integer> queryCurTaskStates(LoginAuthDto loginAuthDto);
}
